其他
听说富集分析有个概念叫Fold Enrichment
fold enrichment是什么?当然问google。
这就很简单了,无非是GeneRatio / BgRatio而已嘛。clusterProfiler把这两值都给出来了,你无非就是除一下。所以我估计问这问题的小朋友不知道是什么,也不搜一下。
library(DOSE)
data(geneList)
de = names(geneList)[1:100]
x = enrichDO(de)
假设我们有这样一个富集分析的结果,那么我们可以用clusterProfiler.dplyr
操作一下,衍生出一个FoldEnrichment的变量。
library(clusterProfiler.dplyr)
x <- mutate(x,
FoldEnrichment = parse_ratio(GeneRatio) / parse_ratio(BgRatio))
这样就有了一个FoldEnrichment的值,假如你不放心的话,你可以检验一下。
> head(x, 2)
ID Description GeneRatio BgRatio pvalue
1 DOID:0060071 pre-malignant neoplasm 5/77 22/8007 1.671524e-06
2 DOID:5295 intestinal disease 9/77 157/8007 1.759049e-05
p.adjust qvalue geneID Count
1 0.0006401937 0.0004609887 6280/6278/10232/332/4321 5
2 0.0027885022 0.0020079362 4312/6279/3627/10563/4283/890/366/4902/3620 9
FoldEnrichment
1 23.633412
2 5.961039
比如这里第一个:
> 5/77 / (22/8007)
[ ] 23.63341
然后这个变量有了,要输出表格的话as.data.frame然后再套个write.csv解决。要画图的话,那更加容易,变量就在富集结果之中,比如直接dotplot
即可。
其实这个Fold Enrichment和Rich Factor是一个东西,FoldEnrichment = (k/n) / (M/N),而RichFactor = k/M,明白了吧,n和N数字是不变的,所以等同于说FoldEnrichment = RichFactor * C,C = N/n 是一个常数,所以它俩是一个东西!不信你再mutate一个richFactor出来,然后再用ggplot画个散点图,所有点都会落在一条直线上。
往期精彩